/**
 * 服务代币消费配置
 */
const ServiceTokenCost = {
  text: 0.1,  // 文本生成
  voice: 6,   // 声音生成
  img: 10,    // 图片生成
  video: 20   // 视频生成（预留）
};

/**
 * 会员等级配置
 */
const MembershipConfig = {
  // 会员等级名称
  TIER_NAMES: {
    1: 'Prelude',   // 一级会员名称
    2: 'Affinity',  // 二级会员名称
    3: 'Soulmate'   // 三级会员名称
  },
  
  // 会员价格（日元）
  TIER_PRICES: {
    1: 1500,  // 一级会员：1500日元/月
    2: 3000,  // 二级会员：3000日元/月
    3: 7200   // 三级会员：7200日元/月
  },
  
  // 会员每月赠送代币
  TIER_TOKENS: {
    1: 1000,  // 一级会员：每月赠送1000代币
    2: 3000,  // 二级会员：每月赠送3000代币
    3: 9000   // 三级会员：每月赠送9000代币
  },
  
  // 代币定价（按会员等级区分）
  TOKEN_PRICES: {
    // 100代币包定价（日元） - 一级会员专享
    100: {
      1: 1500  // 一级会员：1500日元/100代币
    },
    // 1000代币包定价（日元）
    1000: {
      0: 2000,  // 非会员：2000日元
      1: 7500,  // 一级会员：7500日元
      2: 1000,  // 二级会员：1000日元
      3: 800    // 三级会员：800日元
    },
    // 5000代币包定价（日元）
    5000: {
      0: 8000,  // 非会员：8000日元
      1: 0,     // 一级会员：无此规格
      2: 5000,  // 二级会员：5000日元
      3: 4000   // 三级会员：4000日元
    }
  }
};

/**
 * 获取用户对应等级的Stripe价格ID
 * @param {number} tokenAmount - 代币数量（100、1000或5000）
 * @param {number|null} membershipTier - 会员等级（1/2/3或null）
 * @param {Object} priceMapping - Stripe价格ID映射表
 * @returns {string|null} Stripe价格ID
 */
const getTokenPriceId = (tokenAmount, membershipTier, priceMapping) => {
  const tier = membershipTier === null ? 0 : membershipTier;
  const tierPrices = priceMapping[tokenAmount];
  
  if (!tierPrices) return null;
  return tierPrices[tier] || null;
};

/**
 * 获取会员订阅的Stripe价格ID
 * @param {number} tier - 会员等级（1/2/3）
 * @param {Object} priceMapping - Stripe价格ID映射表
 * @returns {string|null} Stripe价格ID
 */
const getMembershipPriceId = (tier, priceMapping) => {
  return priceMapping[tier] || null;
};

module.exports = {
  ServiceTokenCost,
  MembershipConfig,
  getTokenPriceId,
  getMembershipPriceId
}; 